home *** CD-ROM | disk | FTP | other *** search
/ Acorn User: The RISC OS Graphics CD / Acorn User: The RISC OS Graphics CD.iso / argonet / translator.spk / !Translatr / Docs / Guide next >
Text File  |  1998-10-11  |  41KB  |  1,237 lines

  1.  
  2. _____________________
  3.  
  4. Translator user guide
  5. _____________________
  6.  
  7.  
  8. User, please note
  9. =================
  10.  
  11. Translator is Shareware. It is not free software. You may freely use this
  12. program for a single 30 day trial period. After this trial period, you must
  13. decide whether or not you want to continue to use the program. If you don't,
  14. you must stop using the program and delete your copy. If you do, you must
  15. register your copy of the program with the author, paying a small
  16. registration fee. Refer to 'Registering' for details.
  17.  
  18. Please respect the rules of Shareware. Shareware programs like Translator
  19. have cost an awful lot of time and effort to build, will serve you well, and
  20. will cost you very little. If you register the Shareware you use, you will
  21. ensure that Shareware authors will continue to improve the software you use,
  22. and write exciting new Shareware software. If you don't register the
  23. Shareware you use, you are stealing money from Shareware authors, and they
  24. will stop writing Shareware, and start writing much more expensive commercial
  25. software instead.
  26.  
  27. Copyright notice
  28. ================
  29.  
  30. The copyright (c) of this program belongs to John Kortink. All rights are
  31. reserved.
  32.  
  33. You may not change this program (except for documented configuration
  34. changes). You may not use any part of this program in any other program or
  35. product without my written approval. You may spread this program freely, but
  36. only in complete and unchanged form, and only against bare distribution costs
  37. (if any). This program is provided 'as is'. No fitness of this program for
  38. any particular purpose is implied. Using this program is entirely at your own
  39. risk.
  40.  
  41.  
  42. //
  43. //
  44. // Introduction
  45. //
  46. //
  47.  
  48. Translator is a pixel image viewer, processor and convertor, all in one. It
  49. is able to read and write a wide variety of pixel image formats, while also
  50. providing a good set of processing functions with which these images may be
  51. enhanced and manipulated.
  52.  
  53. In addition to this, you will find Translator to be *fast*. In fact, most of
  54. Translator has been written in ARM assembly code, the rest has been written
  55. in C++. In addition, some ported C code is used for JPEG and PNG conversion.
  56.  
  57. Translator runs under RISC OS 3.1 or later, and supports all relevant Acorn
  58. machines, up to and including the latest RISC PC models. Enhanced functions
  59. provided by the operating system and the hardware are used when available.
  60.  
  61.  
  62. //
  63. //
  64. // The major leap
  65. //
  66. //
  67.  
  68. If you have used Translator versions before 8.00, you will no doubt notice
  69. that the program has been enhanced in a very big way.
  70.  
  71. In fact, I rewrote all of it, and the result is version 8.00. Most of the
  72. features of the 'old' Translator have been retained, and most of the features
  73. of Creator and GreyEdit, my two other image processing programs, were added.
  74. And there are some major additional enhancements, among which :
  75.  
  76. - RISC PC compatibility
  77. - The ability to function as an editor
  78. - The ability to load multiple images
  79. - Automatic 'virtual memory'
  80. - Support for selections
  81. - Proper 'interpolating' upscale
  82. - Proper 'averaging' downscale
  83. - Numerous other functions
  84.  
  85. Also, Translator is now tuned to take advantage of specific StrongARM
  86. capabilities where possible.
  87.  
  88.  
  89. //
  90. //
  91. // Using Translator
  92. //
  93. //
  94.  
  95. On Translator's iconbar menu the usual 'Info' and 'Quit' icons can be found.
  96. In addition, 'Options...' gives access to the 'Options' window and 'Status'
  97. gives access to the 'Status' menu. Both the 'Options' window and the 'Status'
  98. menu are described below.
  99.  
  100.  
  101. //
  102. //
  103. // Loading an image
  104. //
  105. //
  106.  
  107. There are three ways to load an image :
  108.  
  109. 1. Drag the image file to Translator's icon.
  110.  
  111. Translator will complain if it cannot recognize the image format.
  112.  
  113. 2. Double-click on the image file while Translator is loaded.
  114.  
  115. If Translator cannot recognize the image format, it will not complain. This
  116. is so that other applications may be offered a chance to load the file.
  117.  
  118. 3. Double-click on the image file while Translator is not loaded, but has
  119.    been 'seen' by the RISC OS Filer.
  120.  
  121. This will only work for image formats that have an allocated filetype. Image
  122. formats that can only be recognized in another way (i.e. by some form of
  123. signature in the image file) won't load in this way (you will have to use
  124. method 1 or 2 instead). When you use method 3, Translator will be loaded
  125. automatically, and will subsequently load the image.
  126.  
  127. The image will appear in an 'image window'. The 'image window' is described
  128. below. You may load multiple images, subject to hard disc space limitations.
  129. Refer to 'Image storage' for more details.
  130.  
  131.  
  132. //
  133. //
  134. // Image storage
  135. //
  136. //
  137.  
  138. Translator does not limit the size or number of the images you can work with.
  139. It can store images either in memory or in a file. An image stored in memory
  140. is referred to as 'cached', an image stored in a file as 'uncached'.
  141.  
  142. By default, Translator chooses to cache images if enough memory is available
  143. to do so. Otherwise, it will automatically uncache the image. Alternatively,
  144. you can tell Translator never to cache images. This may be useful when memory
  145. is tight. Refer to the discussion of the 'Image cache' and 'Display cache'
  146. parts of the 'Options' window.
  147.  
  148. If you wish, you can subsequently cache or uncache images on an individual
  149. basis. This is provided by the 'Cache' entry of the image window menu (refer
  150. to its discussion elsewhere). Once an image is uncached it is never re-cached
  151. automatically. However, a cached image may become uncached automatically,
  152. e.g. when the image is scaled up and there is not enough memory left to store
  153. the new, bigger image.
  154.  
  155. Translator needs to store the image twice. One copy is the actual image data,
  156. the other is needed solely for the image display. Both the image data and the
  157. image display have their own seperate cache settings.
  158.  
  159. In general, when an image is cached, it can be processed much quicker than
  160. when it is uncached. Usually, keeping the image display uncached does not
  161. slow down processing as much as keeping the image data uncached, so if memory
  162. is tight and you have to choose, uncache the image display before you uncache
  163. the image data.
  164.  
  165. Of course, if you regularly need to process reasonably large images and
  166. memory is tight, the best move is to invest in more memory. It comes very
  167. cheap nowadays. However, as Translator can also store images in files, the
  168. size of your harddisc will eventually be the only factor limiting the size
  169. and number of images you can process.
  170.  
  171.  
  172. //
  173. //
  174. // The image window
  175. //
  176. //
  177.  
  178. The image window displays the image. Translator uses sophisticated algorithms
  179. to maximize the quality of the display given the limitations of the selected
  180. screen mode. It is recommended to use a 16- or 32-bit screen mode (i.e. a '32
  181. thousand' or '16 million' colour mode).
  182.  
  183. The filename under which the image was last saved appears in the title of the
  184. image window (for an as yet usaved image this is the original filename). The
  185. filename is followed by the number that Translator assigned to the image
  186. (this number has no real significance, but reappears in some dialogue
  187. windows, so you can tell which image is being referred to). If the image has
  188. been edited and not subsequently saved, a '*' appears behind the image's
  189. filename.
  190.  
  191. Clicking the 'close' icon of an image window will delete the image. If you
  192. attempt to delete a modified image, Translator will warn you. You can switch
  193. off this warning if you wish. Refer to the discussion of the 'Miscellaneous'
  194. part of the 'Options' window for more details.
  195.  
  196.  
  197. //
  198. //
  199. // Making a selection
  200. //
  201. //
  202.  
  203. You may select a part of the image by 'dragging a box'. This part will be
  204. referred to as 'the selection' in the rest of this document.
  205.  
  206. First click and hold SELECT on a corner point, then drag towards the opposite
  207. corner and release SELECT. Clicking SELECT again will remove the selection.
  208. Clicking and/or dragging ADJUST will modify the existing selection.
  209.  
  210. Most of the available image processing functions only affect the selection.
  211. If there is no selection, the whole image is affected. Some image processing
  212. functions can only affect the whole image and therefore completely ignore the
  213. selection.
  214.  
  215. The exact coordinates and the size of the selection may be monitored. Refer
  216. to the discussion of the 'Selection' entry of the image window menu.
  217.  
  218.  
  219. //
  220. //
  221. // The image window menu
  222. //
  223. //
  224.  
  225. Clicking MENU on the image window will pop up a menu that provides image
  226. processing functions and information :
  227.  
  228. ==========
  229. = Origin =
  230. ==========
  231.  
  232. This leads to a window showing information regarding the origin of the image,
  233. i.e. information relating to the image when it was first loaded.
  234.  
  235. ========
  236. = Save =
  237. ========
  238.  
  239. This leads to the 'Save image' window, which allows you to save the image in
  240. a variety of image formats.
  241.  
  242. Clicking on the window will make it permanent. Note that the title of this
  243. window carries the image number which also appears in the title of the
  244. corresponding image window.
  245.  
  246. The format of the output image may be chosen as follows :
  247.  
  248. - 'Format' allows you to choose the image format.
  249. - 'Colours' allows you to choose the number of bits per pixel (bpp) to be
  250.   used, which directly relates to the overall maximum number of colours to
  251.   be retained (being 2^bpp). If the writable field is not shaded, you may
  252.   specify a more precise maximum number of colours if you wish.
  253. - 'Compression' allows you to choose the compression method used.
  254. - 'Filename' allows you to specify the leafname or the full pathname of the
  255.   image to be saved.
  256.  
  257. The 'Colours' field deserves some further explanation. This is displayed as
  258. 'x bit r:g:b type', where 'x' is the number of bits per pixel (referred to
  259. below as 'bpp'), 'r', 'g', and 'b' are the number of bits of accuracy in a
  260. pixel colour of red, green, and blue respectively, and 'type' is the pixel
  261. colour type. There are essentially two pixel colour types :
  262.  
  263. - The 'palette' or 'grey' type indicates that pixel values are not pixel
  264.   colours themselves but indices into a pixel colour lookup table (called a
  265.   'palette'). The 'grey' pixel type also indicates that all palette colours
  266.   are greys. If 'fixed' appears in the type, the palette is always fixed.
  267. - The 'true' pixel type indicates that pixel values directly represent pixel
  268.   colours. Therefore, 'x' is always the addition of 'r', 'g' and 'b'.
  269.  
  270. Saving the image may or may not need colour quantization, colour dithering
  271. and/or colour remapping algorithms to be applied. Translator applies the
  272. required algorithms automatically. The accuracy of the calculations performed
  273. by the algorithms may be changed, if needed. Refer to the discussion of the
  274. 'Quantization' and 'Dithering' parts of the 'Options' window.
  275.  
  276. Colour quantization is used whenever a 'superset' of colours (used in the
  277. input image) needs to be reduced to a smaller 'subset' of colours (to be used
  278. in the output image). The colour quantization algorithm calculates the subset
  279. of colours that best represents the superset of colours. Colour quantization
  280. is only used for palette colour output images. The colour quantization
  281. algorithm used in Translator is known as 'Heckbert median cut'. 
  282.  
  283. Colour dithering is used when the number of colours in the output image is
  284. less than that in the input image, or when any of the number of bits per
  285. r/g/b in the output image colours is less than that in the input image
  286. colours, or when the output palette is fixed. In all these cases, some or all
  287. of the input image colours do not have an exactly matching colour in the
  288. output image, and so, for these colours, the 'closest' output image colours
  289. need to be chosen. For a given pixel, the colour dithering algorithm
  290. 'diffuses' the errors made by this approximation to neighboring pixels. This
  291. effectively 'smears out' the approximation errors over the rest of the image,
  292. which makes the errors much less visible to the human eye. The colour
  293. dithering algorithm used in Translator is a 'zizag' variant of the widely
  294. known and used Floyd-Steinberg algorithm.
  295.  
  296. Colour remapping is used whenever the colour quantization algorithm is used,
  297. and it finds that the number of different colours actually used in the input
  298. image is less than or equal to the number of available output image colours.
  299. In this case, the output image palette simply consists of all actually used
  300. input image colours, and all that is needed is 'remapping' of the input image
  301. colours to their respective output image colours. An exact copy of the input
  302. image results. For example, it is not uncommon to encounter 24 bpp 'true
  303. colour' image files in which only 256 colours (or even less) are actually
  304. used. This can happen if someone, somewhere, sometime, for whatever dim
  305. reason, has 'promoted' an 8 bpp palette colour image to 'true colour'. In
  306. these cases, Translator can exactly recreate the original palette colour
  307. image.
  308.  
  309. Translator does the right thing if the output palette turns out to be all
  310. grey (which usually only happens when the output format requires a fixed grey
  311. palette, e.g. PBMPlus 8 bpp or JPEG 8 bpp). In this situation, the colour
  312. dithering algorithm used is unsuitable if the input image is in colour,
  313. because colours are impossible to approximate well with just grey values,
  314. resulting in a bad quality output image. A special 'grey only' dithering
  315. algorithm is used instead, which gives much better results. The 'Dithering'
  316. setting in the 'Options' window has no effect if this algorithm is used.
  317.  
  318. After making all your choices, you can save the image by either dragging the
  319. filetype icon, or by clicking on the 'Save' icon. Dragging the filetype icon
  320. will result in the image being saved to the directory that the icon was
  321. dragged to, using the leafname specified under 'Filename'. Clicking on the
  322. 'Save' icon will result in the image being saved to the pathname specified
  323. under 'Filename'. This is the original pathname by default.
  324.  
  325. Clicking 'Cancel' will cancel the save.
  326.  
  327. =============
  328. = Transform =
  329. =============
  330.  
  331. This leads to a submenu containing 'transformation' functions (i.e. functions
  332. that move pixels around, leaving their colours unchanged).
  333.  
  334. =======================
  335. = Transform -> Mirror =
  336. =======================
  337.  
  338. This leads to a submenu containing 'mirror' functions.
  339.  
  340. Clicking 'Horizontal' or 'Vertical' will mirror the image in horizontal or
  341. vertical direction respectively.
  342.  
  343. =======================
  344. = Transform -> Rotate =
  345. =======================
  346.  
  347. This leads to a submenu containing 'rotate' functions.
  348.  
  349. Clicking '-90 degrees', '+90 degrees' or '180 degrees' will rotate the image
  350. by the specified angle.
  351.  
  352. The selection is ignored.
  353.  
  354. ======================
  355. = Transform -> Scale =
  356. ======================
  357.  
  358. Clicking on this menu entry will scale the image.
  359.  
  360. The selection is ignored.
  361.  
  362. The scaling ratio can be set seperately for X (horizontal) and Y (vertical)
  363. directions. The 'arrow' icon can be clicked to toggle between 'connected'
  364. mode (normal arrow) and 'unconnected' mode (red cross through arrow). In
  365. 'connected' mode, the X and Y ratios will change together. In 'unconnected'
  366. mode, they change seperately.
  367.  
  368. Translator employs accurate 'interpolating' and 'averaging' scaling
  369. algorithms, giving a very good quality result.
  370.  
  371. =====================
  372. = Transform -> Crop =
  373. =====================
  374.  
  375. Clicking on this menu entry will crop the image, leaving only the pixels
  376. belonging to the selection.
  377.  
  378. ===========
  379. = Process =
  380. ===========
  381.  
  382. This leads to a submenu containing 'processing' functions (i.e. functions
  383. that recalculate pixels' colours, leaving their position unchanged).
  384.  
  385. =====================
  386. = Process -> Filter =
  387. =====================
  388.  
  389. This leads to a submenu containing 'filter' functions. A filter function
  390. looks at every pixel in turn, and recalculates its colour, considering the
  391. old colour of the pixel and the colours of each of its eight neighbor pixels
  392. (i.e. the pixels at the 'north-west', 'north', 'north-east', 'west', 'east',
  393. 'south-west', 'south' and 'south-east' side of the pixel in question). An
  394. alternative way of looking at this is by imagining a 3x3 pixel window moving
  395. over the image, in which the middle pixel is replaced by the result colour of
  396. a calculation involving the colours of all the nine pixels in the window.
  397.  
  398. Note that some neighbor pixels of pixels which lie at the extreme borders of
  399. the image are not available. In these cases, the missing neighbor pixel is
  400. assumed to have the colour of the nearest image pixel.
  401.  
  402. The red, green and blue colour components of the pixels are filtered
  403. independently.
  404.  
  405. Most filters take the pixels in the 3x3 pixel window and multiply their
  406. colour component values by a factor which is different depending on the
  407. position of the pixel in the 3x3 pixel window. The resulting values are
  408. accumulated. The accumulated value is subsequently divided by the total
  409. multiplication factor, yielding the new colour component value. Such a 3x3
  410. set of multipliers is called a 'kernel'. One of the filter functions allows
  411. you to specify your own kernel.
  412.  
  413. =============================
  414. = Process -> Filter -> Blur =
  415. =============================
  416.  
  417. These filters all have a 'blurring' effect.
  418.  
  419. Kernels of blurring filters generally consist entirely of positive factors.
  420. This has an 'averaging' effect (the new pixel is the 'weighted average' of
  421. the pixel itself and its neighbor pixels).
  422.  
  423. You might like to try making your own blurring filters with the custom filter
  424. (described elsewhere). A few tips :
  425.  
  426. - The lower the 'middle' factor, the stronger the blurring effect is.
  427. - Keep the eight neighbor factors the same for a uniform effect.
  428. - For a 'direction sensitive' blurring effect, use consistently higher
  429.   factors on one 'side' of the kernel compared to the opposite 'side'.
  430.  
  431. ========================================
  432. = Process -> Filter -> Blur -> Average =
  433. ========================================
  434.  
  435. This uses a kernel of :
  436.  
  437.  1 1 1
  438.  1 1 1
  439.  1 1 1
  440.  
  441. ======================================
  442. = Process -> Filter -> Blur -> Gauss =
  443. ======================================
  444.  
  445. This uses a kernel of :
  446.  
  447.  1 2 1
  448.  2 4 2
  449.  1 2 1
  450.  
  451. ================================
  452. = Process -> Filter -> Sharpen =
  453. ================================
  454.  
  455. These filters all have a 'sharpening' effect.
  456.  
  457. Kernels of sharpening filters generally consist entirely of negative factors,
  458. except for the middle factor, which is positive. The factors must add up to a
  459. total of 1 or higher.
  460.  
  461. You might like to try making your own sharpening filters with the custom
  462. filter (described elsewhere). A few tips :
  463.  
  464. - The lower the 'middle' factor, the stronger the sharpening effect is.
  465. - Keep the eight neighbor factors the same for a uniform effect.
  466. - For a 'direction sensitive' sharpening effect, use consistently higher
  467.   factors on one 'side' of the kernel compared to the opposite 'side'.
  468.  
  469. ================================================
  470. = Process -> Filter -> Sharpen -> Sharpen weak =
  471. ================================================
  472.  
  473. This uses a kernel of :
  474.  
  475.  -1 -1 -1
  476.  -1 24 -1
  477.  -1 -1 -1
  478.  
  479. ==================================================
  480. = Process -> Filter -> Sharpen -> Sharpen strong =
  481. ==================================================
  482.  
  483. This uses a kernel of :
  484.  
  485.  -1 -1 -1
  486.  -1 16 -1
  487.  -1 -1 -1
  488.  
  489. ===========================================
  490. = Process -> Filter -> Sharpen -> Laplace =
  491. ===========================================
  492.  
  493. This uses a kernel of :
  494.  
  495.   0 -1  0
  496.  -1  5 -1
  497.   0 -1  0
  498.  
  499. =======================================
  500. = Process -> Filter -> Sharpen -> Lee =
  501. =======================================
  502.  
  503. This does not use a kernel but a formula which reads like :
  504.  
  505. 'The new value is the maximum of the window or the minimum of the window,
  506. whichever is closest to the middle'.
  507.  
  508. ==============================
  509. = Process -> Filter -> Noise =
  510. ==============================
  511.  
  512. These filters all have a 'noise removal' effect. They don't use kernels.
  513.  
  514. ============================================
  515. = Process -> Filter -> Noise -> Noise weak =
  516. ============================================
  517.  
  518. This does not use a kernel but a formula which reads like :
  519.  
  520. 'If and only if west is equal to east, then the new value is west'.
  521.  
  522. ==============================================
  523. = Process -> Filter -> Noise -> Noise strong =
  524. ==============================================
  525.  
  526. This does not use a kernel but a formula which reads like :
  527.  
  528. 'If and only if the maximum of north, west, middle, east and south is equal
  529. to the middle (and only the middle), or the minimum of north, west, middle,
  530. east and south is equal to the middle (and only the middle), then the new
  531. value is the average of north, west, east and south'.
  532.  
  533. ==============================
  534. = Process -> Filter -> Other =
  535. ==============================
  536.  
  537. These filters are useful for 'effects'.
  538.  
  539. =========================================
  540. = Process -> Filter -> Other -> Maximum =
  541. =========================================
  542.  
  543. This does not use a kernel but a formula which reads like :
  544.  
  545. 'The new value is the maximum of the window'.
  546.  
  547. =========================================
  548. = Process -> Filter -> Other -> Minimum =
  549. =========================================
  550.  
  551. This does not use a kernel but a formula which reads like :
  552.  
  553. 'The new value is the minimum of the window'.
  554.  
  555. ==========================================
  556. = Process -> Filter -> Other -> Sobel X+ =
  557. ==========================================
  558.  
  559. This uses a kernel of :
  560.  
  561.  -1 0 1
  562.  -2 0 2
  563.  -1 0 1
  564.  
  565. For the technically minded : note that 127 is added to the accumulated value
  566. (before division) because the total multiplication factor is 0.
  567.  
  568. ==========================================
  569. = Process -> Filter -> Other -> Sobel X- =
  570. ==========================================
  571.  
  572. This uses a kernel of :
  573.  
  574.  1 0 -1
  575.  2 0 -2
  576.  1 0 -1
  577.  
  578. Comments as for 'Sobel X+'.
  579.  
  580. ==========================================
  581. = Process -> Filter -> Other -> Sobel Y+ =
  582. ==========================================
  583.  
  584. This uses a kernel of :
  585.  
  586.  -1 -2 -1
  587.   0  0  0
  588.   1  2  1
  589.  
  590. Comments as for 'Sobel X+'.
  591.  
  592. ==========================================
  593. = Process -> Filter -> Other -> Sobel Y- =
  594. ==========================================
  595.  
  596. This uses a kernel of :
  597.  
  598.   1  2  1
  599.   0  0  0
  600.  -1 -2 -1
  601.  
  602. Comments as for 'Sobel X+'.
  603.  
  604. ========================================
  605. = Process -> Filter -> Other -> Custom =
  606. ========================================
  607.  
  608. Clicking on this menu entry will apply the custom filter.
  609.  
  610. In the window that this menu entry leads to, you can enter your own kernel.
  611.  
  612. Note that the total of the kernel factors should be 0 or higher. The +127
  613. correction factor for a total kernel factor of 0 is applied automatically.
  614.  
  615. ===================
  616. = Process -> Mask =
  617. ===================
  618.  
  619. Clicking on this menu entry will perform a bit masking operation.
  620.  
  621. In the window that this menu entry leads to, you can specify a bit mask to be
  622. applied to the red, green and blue colour components of the pixels. If a mask
  623. bit is 0, the corresponding bit of the (8-bit) colour component is forced to
  624. 0, else (i.e. if the mask bit is 1) the corresponding bit is not changed.
  625.  
  626. The bit mask can be set seperately for the red, green and blue colour
  627. component. The 'arrow' icon can be clicked to toggle between 'connected' mode
  628. (normal arrow) and 'unconnected' mode (two red crosses through arrow). In
  629. 'connected' mode, the red, green and blue masks will change together. In
  630. 'unconnected' mode, they change seperately.
  631.  
  632. The bit masking function may be useful when an image has 'noise' in its
  633. lowest colour component bits (e.g. when the image originates from a scanner
  634. or digitizer with less than 8 bits accuracy per colour component).
  635.  
  636. ============================
  637. = Process -> Correct black =
  638. ============================
  639.  
  640. Clicking on this menu entry will perform a black correction on the image,
  641. i.e. the black level of the image is shifted 'up' or 'down'.
  642.  
  643. You can enter the correction factor (which may be between -255 and +255) in
  644. the writable icon.
  645.  
  646. The black correction function may be useful when what should be black in the
  647. image is actually a shade of grey.
  648.  
  649. ============================
  650. = Process -> Correct gamma =
  651. ============================
  652.  
  653. Clicking on this menu entry will perform a gamma correction on the image.
  654.  
  655. Gamma correction is needed when the original image was scanned or digitized
  656. using a linear scale of intensity values. This has to be corrected for
  657. display on monitors, as monitor tubes do not respond linearly to linear
  658. increases in pixel intensity values. Gamma correction applies the 'inverse'
  659. response function of the monitor tube, so the scanned or digitized image
  660. looks more like the original.
  661.  
  662. Note that, usually, the only images that may need gamma correction are the
  663. ones that you have scanned or digitized yourself. Even then, it is likely
  664. that your scanning or digitizing software has already applied gamma
  665. correction. It is inadvisable to apply gamma correction to an already
  666. gamma-corrected image. Therefore, most users will not need to use this
  667. function.
  668.  
  669. You can enter the correction factor (something between 1.5 and 2.5 is usually
  670. a good choice) in the writable icon.
  671.  
  672. ========================
  673. = Process -> Make grey =
  674. ========================
  675.  
  676. Clicking on this menu entry will turn the image colours into greys.
  677.  
  678. ===========================
  679. = Process -> Expand range =
  680. ===========================
  681.  
  682. Clicking on this menu entry will improve the contrast of the image.
  683.  
  684. This function determines the range of intensity values used in the image and,
  685. if possible, remaps the intensity values so they cover the full intensity
  686. range available.
  687.  
  688. =======================
  689. = Process -> Equalize =
  690. =======================
  691.  
  692. Clicking on this menu entry will perform 'histogram equalization' on the
  693. image.
  694.  
  695. Histogram equalization measures the accumulated frequencies of all intensity
  696. values used in the image. The intensity values are subsequently remapped in
  697. such a way that the resulting accumulated frequency graph more closely
  698. resembles a straight line. I.e. the intensity values are spread in a more
  699. uniform way.
  700.  
  701. Note that histogram equalization does not necessarily improve an image's
  702. quality. The effect greatly depends on the image contents.
  703.  
  704. =====================
  705. = Process -> Invert =
  706. =====================
  707.  
  708. Clicking on this menu entry will 'invert' all the image colours.
  709.  
  710. The result is a 'negative' image. Inverting a second time will restore the
  711. original image colours.
  712.  
  713. =========
  714. = Cache =
  715. =========
  716.  
  717. This leads to a submenu enabling you to cache or uncache the image data or
  718. the image display.
  719.  
  720. A 'tick' indicates that the image is currently cached. Clicking on the
  721. 'Image' or 'Display' icon will uncache a cached image or vice versa.
  722.  
  723. Refer to 'Image storage' for more detailed information.
  724.  
  725. =============
  726. = Selection =
  727. =============
  728.  
  729. This leads to the 'Selection info' window, which allows you to view the
  730. current selection coordinates.
  731.  
  732. Clicking on the window will make it permanent. Note that the title of this
  733. window carries the image number which also appears in the title of the
  734. corresponding image window.
  735.  
  736. ========
  737. = Copy =
  738. ========
  739.  
  740. Clicking on this menu entry makes a copy of the image.
  741.  
  742. //
  743. //
  744. // The 'Options' window
  745. //
  746. //
  747.  
  748. In this window, you will find seven parts, called 'Load options', 'Save
  749. options', 'Image cache', 'Display cache', 'Miscellaneous', 'Quantization' and
  750. 'Dithering'.
  751.  
  752. The 'Load options' part allows you to specify 'load options' for some image
  753. formats, which influence the way images are loaded. In most cases load
  754. options can be left at their default settings. Refer to 'Supported image
  755. formats (detailed)' for information on specific load options.
  756.  
  757. The 'Save options' part is similar to the 'Load options' part, except that
  758. these options influence the way that images are saved.
  759.  
  760. The 'Image cache' and 'Display cache' parts allow you to force Translator
  761. never to cache either the image data or image display respectively. In the
  762. 'Auto' setting Translator will decide automatically whether to cache or not.
  763. In the 'Never' setting, Translator will never cache. Refer to 'Image storage'
  764. for more detailed information.
  765.  
  766. The 'Miscellaneous' part allows you to switch off the warnings about unsaved
  767. modified images, if these annoy you. These warnings are given when Translator
  768. finds you are about to discard an edited image.
  769.  
  770. The 'Quantization' part allows you to select the accuracy with which colour
  771. frequencies are determined during colour quantization. A higher number of
  772. bits for 'Red', 'Green' or 'Blue' will increase the accuracy with which the
  773. corresponding colour component is handled. Note however that selecting more
  774. than the default of 5 bits per colour component results in only very marginal
  775. and mostly unnoticable differences in image quality. Also note that selecting
  776. less than 5 bits is not really recommended except for the entertainment value
  777. that the resulting images provide. Also note that the memory requirements for
  778. the quantization tables double with every bit added to the total number of
  779. bits. The default setting of 5 bits per colour component (15 bits total)
  780. requires around 128k of memory for the quantization tables.
  781.  
  782. The 'Dithering' part allows you to select the accuracy of the colour mapping
  783. tables used during colour dithering. Comments similar to the comments under
  784. 'Quantization' apply. The default setting of 5 bits per colour component (15
  785. bits total) requires around 128k of memory for the dithering tables.
  786.  
  787.  
  788. //
  789. //
  790. // The 'Status' menu
  791. //
  792. //
  793.  
  794. In this menu you can manipulate Translator's 'status', which consists of a
  795. number of configuration settings.
  796.  
  797. - 'Save' will save the current status.
  798. - 'Load' will load the saved status.
  799. - 'Default' will load the default status.
  800. - 'Kill' will remove the saved status.
  801.  
  802. When Translator starts up it loads the saved status, or the default status if
  803. there is no saved status.
  804.  
  805. The status consists of the 'Image cache', 'Display cache', 'Miscellaneous',
  806. 'Quantization' and 'Dithering' settings. These can all be found in the
  807. 'Options' window.
  808.  
  809.  
  810. //
  811. //
  812. // Supported image formats (overview)
  813. //
  814. //
  815.  
  816. Translator can read the following image formats (in alphabetical order) :
  817.  
  818. - AIM
  819. - BMP
  820. - CadSoft
  821. - Clear
  822. - Degas
  823. - GIF
  824. - IFF
  825. - ImageIO
  826. - IMG
  827. - Irlam
  828. - JPEG
  829. - MacPaint
  830. - MTV
  831. - PBMPlus
  832. - PCX
  833. - Pineapple
  834. - PNG
  835. - QRT
  836. - Sprite
  837. - TIFF
  838.  
  839. Translator can write the following image formats (in alphabetical order) :
  840.  
  841. - Clear
  842. - GIF
  843. - ImageIO
  844. - JPEG
  845. - PBMPlus
  846. - PNG
  847. - Sprite
  848. - TIFF
  849.  
  850. The 'ImageIO' format is a special 'internal' format which is not meant to be
  851. used outside Translator.
  852.  
  853. For more details about the image formats that Translator supports, see
  854. 'Supported image formats (detailed)'.
  855.  
  856. For some image formats that Translator understands, you may specify a few
  857. special settings to be used when loading or saving an image in that format.
  858. Refer to the discussion of the 'Load options' and 'Save options' parts of the
  859. 'Options' window.
  860.  
  861.  
  862. //
  863. //
  864. // Supported image formats (detailed)
  865. //
  866. //
  867.  
  868. Following are brief details of all supported image formats.
  869.  
  870. Image format interpreters are usually very complete, but may, in some cases,
  871. lack support for some subformats. All image interpreters have at least been
  872. tested successfully on all sample images I could find, and have been verified
  873. as well as possible against documentation available to me. Generally, if
  874. Translator encounters formats or subformats that cannot be recognized or are
  875. not supported, it will give up gracefully and provide an indication of why it
  876. has failed.
  877.  
  878. AIM
  879. ===
  880. - Origin
  881.   Acorn machines. !AIM (Archimedes Image Manager) program.
  882. - Colours
  883.   8 bpp 8:8:8 grey
  884. - Compression
  885.   none
  886. - Recognition
  887.   filetype &004
  888. - Miscellaneous
  889.   Resolution is always 256 x 256 pixels.
  890.  
  891. BMP
  892. ===
  893. - Origin
  894.   IBM compatible machines. Microsoft Windows operating system.
  895. - Colours
  896.   1 bpp 8:8:8 palette colour
  897.   4 bpp 8:8:8 palette colour
  898.   8 bpp 8:8:8 palette colour
  899.   24 bpp 8:8:8 true colour
  900. - Compression
  901.   none
  902.   runlength
  903. - Recognition
  904.   filetype &69C
  905.   'BM' at offset &0
  906.  
  907. CadSoft
  908. =======
  909. - Origin
  910.   Acorn machines. Millipede Prisma display board.
  911. - Colours
  912.   8 bpp 8:8:8 palette colour
  913. - Compression
  914.   none
  915.   runlength
  916. - Recognition
  917.   filetype &69A
  918.   'MILLIPEDE' at offset &10
  919.  
  920. Clear
  921. =====
  922. - Origin
  923.   Acorn machines. !Translator program and several hardware vendors' programs.
  924. - Colours
  925.   1,2,3,4,5,6,7,8 bpp 8:8:8 palette colour
  926.   24 bpp 8:8:8 true colour
  927. - Compression
  928.   none
  929. - Recognition
  930.   filetype &690
  931.  
  932. Degas
  933. =====
  934. - Origin
  935.   Atari machines. Degas and other programs.
  936. - Colours
  937.   1,2,4 bpp 3:3:3 palette colour
  938. - Compression
  939.   none
  940.   runlength
  941. - Recognition
  942.   filetype &691
  943.  
  944. GIF
  945. ===
  946. - Origin
  947.   Various machines. Graphics Interchange Format, devised by and copyright of
  948.   Compuserve Incorporated.
  949. - Colours
  950.   1,2,3,4,5,6,7,8 bpp 8:8:8 palette colour
  951. - Compression
  952.   12-bit LZW
  953. - Recognition
  954.   filetype &695
  955.   'GIF87a' or 'GIF89a' at offset &0
  956. - Miscellaneous
  957.   When reading, any GIF89a extensions are skipped and ignored. When writing,
  958.   GIF87a format is always used.
  959. - Save options
  960.   'Interlace' defines whether or not an interlaced image is saved. 'Interlace
  961.   = Yes' will save an interlaced image, 'Interlace = No' won't.
  962.  
  963. IFF
  964. ===
  965. - Origin
  966.   Various machines. Interchange Format File, devised by Electronic Arts.
  967. - Colours
  968.   1,2,3,4,5,6,7,8 bpp 4:4:4 palette colour
  969.   1,2,3,4,5,6,7,8 bpp 8:8:8 palette colour
  970.   12 bpp 4:4:4 true colour
  971.   24 bpp 8:8:8 true colour
  972. - Compression
  973.   none
  974.   runlength
  975. - Recognition
  976.   filetype &693
  977.   'FORM' at offset &0 and 'ILBM' at offset &8
  978.  
  979. IMG
  980. ===
  981. - Origin
  982.   Atari and IBM compatible machines. Digital Research GEM programs.
  983. - Colours
  984.   1 bpp 8:8:8 grey
  985. - Compression
  986.   various methods
  987. - Recognition
  988.   filetype &692
  989.  
  990. Irlam
  991. =====
  992. - Origin
  993.   Acorn machines. Irlam video digitiser.
  994. - Colours
  995.   24 bpp 8:8:8 grey
  996. - Compression
  997.   none
  998. - Recognition
  999.   filetype &69B
  1000.   'Irlam' at offset &0
  1001.  
  1002. JPEG
  1003. ====
  1004. - Origin
  1005.   Various machines. Joint Photographic Expert Group, the actual format is
  1006.   called JFIF (JPEG File Interchange Format), devised by C-Cube Microsystems.
  1007. - Colours
  1008.   8 bpp 8:8:8 grey
  1009.   24 bpp 8:8:8 true colour
  1010. - Compression
  1011.   Baseline JPEG
  1012. - Recognition
  1013.   filetype &C85
  1014.   &FF, &D8 at offset &0
  1015. - Load options
  1016.   'Float DCT = No' uses 'fast' integer DCT (Discrete Cosine Transform) code.
  1017.   'Float DCT = Yes' uses slightly more accurate but 'slow' floating point DCT
  1018.   code. In practice, both option settings nearly always result in the same
  1019.   image quality.
  1020. - Save options
  1021.   'Quality = xx', where xx = 0..100, sets the quality level. 100 is best
  1022.   quality, lowest compression. 0 is worst quality, highest compression.
  1023.   'Optimize' switches on/off compression optimization (switching it on
  1024.   results in somewhat smaller files but also uses more processing time).
  1025.   'Optimize = Yes' switches on compression optimization. 'Optimize = No'
  1026.   switches it off.
  1027. - Miscellaneous
  1028.   - Processing code is in C. Acknowledgements :
  1029.     - Compiled with GCC for RISC OS release 1.0.7, (c) 1996 Nick Burrett.
  1030.     - Linked with UnixLib 3.7b, maintained by Simon Callan.
  1031.     - Uses IJG JPEG library 6a (07 Feb 1996), (c) 1991-1996 Thomas G. Lane
  1032.       I am required to state that 'This work is based in part on the work of
  1033.       the Independent JPEG Group'.
  1034.  
  1035. MacPaint
  1036. ========
  1037. - Origin
  1038.   Apple MacIntosh machines. MacPaint program.
  1039. - Colours
  1040.   1 bpp 8:8:8 grey
  1041. - Compression
  1042.   runlength
  1043. - Recognition
  1044.   filetype &694
  1045.   'PNTG' at offset &41
  1046. - Miscellaneous
  1047.   Resolution is always 576 x 720 pixels.
  1048.  
  1049. MTV
  1050. ===
  1051. - Origin
  1052.   Various machines. MTV ray tracer.
  1053. - Colours
  1054.   24 bpp 8:8:8 true colour
  1055. - Compression
  1056.   none
  1057. - Recognition
  1058.   filetype &699
  1059.  
  1060. PBMPlus
  1061. =======
  1062. - Origin
  1063.   Unix machines. Portable Bit Map set of conversion programs, devised by Jef
  1064.   Poskanzer.
  1065. - Colours
  1066.   1,2,3,4,5,6,7,8 bpp 8:8:8 grey
  1067.   24 bpp 8:8:8 true colour
  1068. - Compression
  1069.   none
  1070. - Recognition
  1071.   filetype &69E
  1072.   'Px' at offset &0, where x = 1,2,3,4,5,6
  1073. - Miscellaneous
  1074.   Cannot save 2..7 bpp 8:8:8 grey.
  1075.  
  1076. PCX
  1077. ===
  1078. - Origin
  1079.   IBM compatible machines. ZSoft PC Paintbrush program.
  1080. - Colours
  1081.   1,2,4,8 bpp 8:8:8 palette colour
  1082. - Compression
  1083.   none
  1084.   runlength
  1085. - Recognition
  1086.   filetype &697
  1087.  
  1088. Pineapple
  1089. =========
  1090. - Origin
  1091.   Acorn machines. Pineapple Software video digitiser.
  1092. - Colours
  1093.   16 bpp 5:6:5 true colour
  1094. - Compression
  1095.   none
  1096. - Recognition
  1097.   filetype &696
  1098.   'FSIfile' at offset &0
  1099. - Miscellaneous
  1100.   Resolution is always 512 x 256 pixels.
  1101.  
  1102. PNG
  1103. ===
  1104. - Origin
  1105.   Various machines. Portable Network Graphics format, initially designed to
  1106.   impove on and fully replace GIF, since GIF's compression algorithm poses
  1107.   patent problems since 1995. Forget GIF, use PNG (compresses better too !).
  1108. - Colours
  1109.   1,2,4,8 bpp 8:8:8 palette colour
  1110.   1,2,4 bpp 8:8:8 grey
  1111.   8 bpp 8:8:8 grey with optional alpha channel
  1112.   16 bpp 16:16:16 grey with optional alpha channel
  1113.   24 bpp 8:8:8 true colour with optional alpha channel
  1114.   48 bpp 16:16:16 true colour with optional alpha channel
  1115. - Compression
  1116.   Deflate
  1117. - Recognition
  1118.   filetype &B60
  1119.   137, 80, 78, 71, 13, 10, 26, 10 at offset &0
  1120. - Miscellaneous
  1121.   Reader supports all formats, but :
  1122.   - 16 bpp 16:16:16 grey is 'stripped' to 8 bpp 8:8:8 grey.
  1123.   - 48 bpp 16:16:16 true colour is 'stripped' to 24 bpp 8:8:8 true colour.
  1124.   - Alpha channels and transparency cause pixel colours to be recalculated
  1125.     against a background colour (black if not specified in PNG file).
  1126.   - Processing code is in C. Acknowledgements :
  1127.     - Compiled with GCC for RISC OS release 1.0.7, (c) 1996 Nick Burrett.
  1128.     - Linked with UnixLib 3.7b, maintained by Simon Callan.
  1129.     - Uses libpng 1.0 beta 3 0.89, (c) 1995-1996 Guy Eric Schalnat.
  1130.     - Uses zlib 1.0.4, (c) 1995-1996 Jean-loup Gailly and Mark Adler.
  1131.  
  1132. QRT
  1133. ===
  1134. - Origin
  1135.   Various machines. QRT ray tracer.
  1136. - Colours
  1137.   24 bpp 8:8:8 true colour
  1138. - Compression
  1139.   none
  1140. - Recognition
  1141.   filetype &698
  1142.  
  1143. Sprite
  1144. ======
  1145. - Origin
  1146.   Acorn machines. Acorn defined native image format.
  1147. - Colours
  1148.   1,2,4,8 bpp 4:4:4 palette colour
  1149.   1,2,4,8 bpp 8:8:8 palette colour
  1150.   15 bpp 5:5:5 true colour
  1151.   24 bpp 8:8:8 true colour
  1152. - Compression
  1153.   none
  1154. - Recognition
  1155.   filetype &FF9
  1156. - Load options
  1157.   'Default palette' defines the palette to use when palette colour sprites
  1158.   without a palette are loaded. If the mapping of the bpp of the input to the
  1159.   corresponding mode is thought of as 1,2,4,8 bpp --> mode 18,19,20,21, then
  1160.   'Default palette = WIMP' will use the default WIMP palette for the
  1161.   appropriate mode, and 'Default palette = Mode' will use the default mode
  1162.   palette (as after a MODE command outside the desktop).
  1163. - Save options
  1164.   'Sprite type' defines the sprite type to save. It only affects the mode
  1165.   number saved in the sprite file. 'Sprite type = Default' will save old type
  1166.   sprites for 4:4:4 palette colour input, else new type sprites. 'Sprite type
  1167.   = Force old' will always save old type sprites. 'Sprite type  = Force new'
  1168.   will always save new type sprites.
  1169. - Miscellaneous
  1170.   Sprite masks are always ignored. Old type 8 bpp 4:4:4 sprites always have
  1171.   the standard fixed 256-colour palette and are actually saved without
  1172.   palette.
  1173.  
  1174. TIFF
  1175. ====
  1176. - Origin
  1177.   Various machines. Tag Image File Format (that's 'Tag', not 'Tagged' as most
  1178.   people think !), devised by Aldus Corporation and Microsoft Corporation.
  1179. - Colours
  1180.   1,2,4,8 bpp 8:8:8 palette colour
  1181.   24 bpp 8:8:8 true colour
  1182. - Compression
  1183.   none
  1184.   packbits
  1185.   12-bit LZW
  1186. - Recognition
  1187.   filetype &FF0
  1188.   'II' or 'MM' at offset &0
  1189.  
  1190.  
  1191. //
  1192. //
  1193. // Registering
  1194. //
  1195. //
  1196.  
  1197. Please register this program if it serves you well. I am sacrificing a lot of
  1198. my time to help increase the amount of good software available for your Acorn
  1199. machine. Registration is cheap and easy.
  1200.  
  1201. To register, send 30 Dutch Guilders to :
  1202.  
  1203. John Kortink
  1204. Nutterbrink 31
  1205. 7544 WJ Enschede
  1206. The Netherlands
  1207.  
  1208. As soon as your registration has been received you will be a registered user
  1209. of Translator. A floppy disc with the latest version of Translator will be
  1210. sent to you free of charge, unless you are easily able to access my www page
  1211. on the Internet, in which case you already have immediate access to the very
  1212. latest versions. Registration also entitles you to free use of any future
  1213. versions of Translator.
  1214.  
  1215. NOTE : if you register for any one of my applications Translator, Creator or
  1216. GreyEdit, you are automatically registered for all of them.
  1217.  
  1218. I can accept any of the following types of payment (in order of preference) :
  1219.  
  1220. - Cash. You may send any regular European currency, as long as it is
  1221.   equivalent to 30 Dutch Guilders and consists of 'large', recent bank notes
  1222.   only.
  1223. - Eurocheque. Please note down your pass number on the back of the cheque or
  1224.   I will be unable to cash the cheque at the bank.
  1225.  
  1226. Please note that I cannot accept any other type of payment, including cheques
  1227. that are not Eurocheques. I cannot cash these cheques without paying high
  1228. bank charges.
  1229.  
  1230. Updates of Translator will be made available by (in order of preference) :
  1231.  
  1232. - World Wide Web, on www.inter.nl.net/users/J.Kortink.
  1233. - Electronic mail, to kortink@inter.nl.net.
  1234. - Snail mail, to : see registration address. Include a DD or HD floppy,
  1235.   return envelope and one International Reply Coupon (IRC).
  1236.  
  1237.